/**
 * 检查用户快照表中管理员字段的脚本
 * 用于验证 isAdmin 等管理员字段是否已存在
 */

const { sequelize } = require('../dist/config/database');

async function checkAdminFields() {
  try {
    console.log('🔍 检查用户快照表中的管理员字段...');
    
    // 连接数据库
    await sequelize.authenticate();
    console.log('✅ 数据库连接成功');
    
    // 查询表结构
    const [results] = await sequelize.query(`
      PRAGMA table_info(user_snapshots);
    `);
    
    console.log('\n📋 user_snapshots 表当前字段:');
    results.forEach(column => {
      console.log(`  - ${column.name}: ${column.type} ${column.notnull ? 'NOT NULL' : 'NULL'} ${column.dflt_value ? `DEFAULT ${column.dflt_value}` : ''}`);
    });
    
    // 检查管理员字段
    const adminFields = ['isAdmin', 'isSuperAdmin', 'isMuted', 'adminPrivileges'];
    const existingFields = results.map(col => col.name);
    
    console.log('\n🔐 管理员字段检查结果:');
    adminFields.forEach(field => {
      const exists = existingFields.includes(field);
      console.log(`  - ${field}: ${exists ? '✅ 已存在' : '❌ 不存在'}`);
    });
    
    // 统计结果
    const missingFields = adminFields.filter(field => !existingFields.includes(field));
    
    if (missingFields.length === 0) {
      console.log('\n🎉 所有管理员字段都已存在！');
    } else {
      console.log(`\n⚠️  缺少 ${missingFields.length} 个管理员字段: ${missingFields.join(', ')}`);
      console.log('需要运行迁移脚本来添加这些字段。');
    }
    
    await sequelize.close();
    
  } catch (error) {
    console.error('❌ 检查失败:', error);
    process.exit(1);
  }
}

// 运行检查
checkAdminFields();